'use strict';
const db = uniCloud.database();
const _ = db.command;

exports.main = async (event, context) => {
  try {
    // 获取请求参数
    const { id } = event;
    const { OPENID } = context;
    
    // 验证请求参数
    if (!id) {
      return {
        code: 400,
        message: '用户ID不能为空'
      };
    }
    
    // 验证管理员权限
    const adminInfo = await db.collection('admin_users')
      .where({
        openid: OPENID,
        is_active: true
      })
      .field({
        _id: 1,
        username: 1,
        role: 1
      })
      .get();
    
    if (adminInfo.data.length === 0) {
      return {
        code: 403,
        message: '您没有管理员权限'
      };
    }
    
    // 验证用户是否存在
    const userInfo = await db.collection('users')
      .doc(id)
      .get();
    
    if (!userInfo.data) {
      return {
        code: 404,
        message: '用户不存在'
      };
    }
    
    // 开始事务操作
    const transaction = await db.startTransaction();
    
    try {
      // 1. 删除用户记录
      await transaction.collection('users').doc(id).remove();
      
      // 2. 删除用户的收藏记录
      await transaction.collection('collections').where({
        user_id: id
      }).remove();
      
      // 3. 删除用户的下载记录
      await transaction.collection('downloads').where({
        user_id: id
      }).remove();
      
      // 4. 删除用户的反馈记录
      await transaction.collection('feedbacks').where({
        user_id: id
      }).remove();
      
      // 提交事务
      await transaction.commit();
      
      // 记录操作日志
      await db.collection('admin_logs').add({
        admin_id: adminInfo.data[0]._id,
        admin_name: adminInfo.data[0].username,
        action: 'delete_user',
        target_id: id,
        target_name: userInfo.data.username,
        create_time: Date.now()
      });
      
      return {
        code: 0,
        message: '删除用户成功'
      };
      
    } catch (transError) {
      // 回滚事务
      await transaction.rollback();
      console.error('删除用户事务失败:', transError);
      return {
        code: 500,
        message: '删除用户失败，请稍后重试',
        error: transError.message
      };
    }
    
  } catch (error) {
    console.error('删除用户失败:', error);
    return {
      code: 500,
      message: '删除用户失败，请稍后重试',
      error: error.message
    };
  }
};